/* License Notice:
**
** This program is free software: you can redistribute it and/or modify
**    it under the terms of the GNU General Public License as published by
**    the Free Software Foundation, either version 3 of the License, or
**    (at your option) any later version.
** This program is distributed in the hope that it will be useful,
**   but WITHOUT ANY WARRANTY; without even the implied warranty of
**   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
**   GNU General Public License for more details.
** You should have received a copy of the GNU General Public License
**   along with this program. If not, see <https://www.gnu.org/licenses/>.
*/

/**
 * @file scenery.hpp
 * @author TooOld2Rock'nRoll
 * @date 2023/04/12
 * @brief Implements a suggestion for what a Scenery supper class could be for the ArcadeFighter library.
 */
#ifndef _SCENERY_HPP_
#define _SCENERY_HPP_

/*---- Includes ----*/
#include "resource_manager.hpp"
#include "interfaces/game_object.hpp"


/*---- Class Declaration ----*/
/**
 * @brief Scenery class for the ArcadeFighter library.
 * @extends GameObject
 *
 * Since things like backgrounds are very simple, this is almost just a pure GameObjects, any passive elements of
 *   a Level would look very much like this.<br>
 * It will print all its sprites in order, which, if you are making good use of a image atlas or sprite sheets, would add
 *   up to just one or two of this classes, making them self contained and well organized.
 */
class Scenery : public GameObject
{
    private:


    protected:


    public:
        Scenery (DomainID_t domain_id, Shader *sh = nullptr, unsigned sprite_count = 1);

        /** @brief Does nothing, most scenarios are static. */
        virtual void update (double delta_t) override {  }
        virtual void draw () override;
};//END Scenery

#endif //_SCENERY_HPP_

